#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :1.0 B站排行.py
# @Time      :2020/7/23 19:04
# @Author    :亮亮
# @说明       :B站不同区的每日排行
# @总结       :
import requests
from lxml import etree
from fake_useragent import UserAgent


def get_html(url):
    # 1.构建请求头
    # 1.1 模拟浏览器身份
    headers = {
        "User-Agent": UserAgent().random
    }
    # 1.2 忽略ssl证书
    # 1.3 传入cookie
    # 1.4 构建代理池
    # 以上3点都没必要

    # 构建返回对象
    response = requests.get(url)

    # 返回对象方便兼容
    return response


def re_html(info):
    # 构建对象
    e = etree.HTML(info)

    # 构建解析规则
    title = e.xpath('//div[@class="info"]/a/text()')  # 标题
    author = e.xpath('//div[@class="info"]/div/a/span/text()')  # 作者
    sore = e.xpath('//div[@class="info"]/div/div/text()')  # 得分

    return title, author, sore


def main():
    while True:
        # 1.显示输入选择区
        print("----B站每日各区数据统计----")
        print("|---1.全站---|---2.动画---|---3.国创相关---|---4.音乐---|\n"
              + "|---5.舞蹈---|---6.游戏---|---7.知识---|---8.数码---|\n"
              + "|---9.生活---|---10.鬼畜---|---11.时尚---|---12.生活---|\n|---13.影视---|---14.退出程序---|")
        name = int(input("输入要选择区的序号："))

        # 2.判断退出
        if name == 14:
            print("***欢迎下次使用***")
            break
        print("----排行筛选范围----")
        print("|---1.日排行---|---2.周排行---|---3.月排行---|")
        choice = int(input("选择范围序号："))

        # 3.数据匹配模块儿
        name_list_number = name - 1
        name_list = ["0", "1", "168", "3", "129", "4", "36",
                     "188", "160", "119", "155", "5", "181"]
        choice_list_number = choice - 1
        choice_list = ["1", "7", "30"]

        # 4.合成网站url
        url = "https://www.bilibili.com/ranking/all/{}/0/{}".format(name_list[name_list_number],
                                                                    choice_list[choice_list_number])

        # 5.获取网页内容
        info = get_html(url).text

        # 6.分析网页内容
        title, author, sore = re_html(info)

        # 7.输出结果模块儿
        for i in range(100):
            print("-----------------")
            print("第{}名：{}".format(i + 1, title[i]))
            print("作者：{}".format(author[i]))
            print("得分：{}".format(sore[i]))

        print("*" * 20 + "\n" + "*" * 20)
        print("*****信息获取完毕*****")
        print("*" * 20 + "\n" + "*" * 20)


if __name__ == '__main__':
    main()
